<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // promise 周边方法 ：
        // 一、promise的实例方法   二、promise 的静态方法 
        // 一、promise里的实例方法 
        // 1.catch :捕捉 promise 链上的错误 ；
        // let p = new Promise((resolve,reject)=>{
        //     // resolve(111);
        //     reject("error");
        // })

        // p.then(res=>{
        //     console.log(res)
        // }).catch(err=>{
        //     console.log(err);
        // })


        // 多个promise 对象 执行 
        // function fn1() {
        //     return new Promise((res, rej) => {
        //         setTimeout(() => {
        //             res(111);
        //             // rej("错误");
        //         }, 1000);
        //     })
        // }

        // function fn2() {
        //     return new Promise((res, rej) => {
        //         setTimeout(() => {
        //             // res(222);
        //             rej("222错误");
        //         }, 1000)
        //     })
        // }

        // function fn3() {
        //     return new Promise((res, rej) => {
        //         setTimeout(() => {
        //             res(333);
        //         }, 1000)
        //     })
        // }
        // fn1().then(res=>{
        //     console.log(res);
        //     return fn2();
        // }).then(res=>{
        //     console.log(res);
        //     return fn3();
        // }).then(res=>{
        //     console.log(res);
        // }).catch(err=>{console.log("catch",err);})

        // let a = new Promise((resolve, reject) => {
        //     reject("错误1")
        //     // resolve('成功')
        //     // 或者
        //     // throw new Error("错误1")
        // })
        // a.then(res => {
        // }).then(res => {
        //     throw new Error("错误2")
        // }).catch(err => {
        //     console.log("err:", err)   //直接捕获 new Promise  reject("错误1")
        // })

        // async function fn() {
        //     try {
        //         await fn2();
        //     } catch (err) {console.log("??",err);}
        //     try{

        //     }catch(err=>{   // 错误的 ；
        //         console.log(err);
        //     })
        // }
        // fn();

        // 2 。finally ： 无论成功或者失败都会最后执行。promise执行完了之后调用。

        // fn1().finally(() => {
        //     console.log("执行完了");
        // })
    </script>
</body>

</html>